/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved. 
 */
package com.icinfo.cloud.provider.punish.execute.service;

import com.icinfo.cloud.provider.punish.csource.manage.dto.FlowCommonDto;
import com.icinfo.cloud.provider.punish.csource.manage.dto.FlowRecordDto;
import com.icinfo.cloud.provider.punish.csource.manage.dto.FlowRecordVo;
import com.icinfo.cloud.provider.punish.csource.manage.model.CaseSourceFlowRecord;
import com.icinfo.cloud.provider.punish.execute.dto.ExecuteFlowCommonDto;
import com.icinfo.cloud.provider.punish.execute.dto.ExecuteFlowRecordRequest;
import com.icinfo.cloud.provider.punish.execute.dto.ExecuteFlowRecordVo;
import com.icinfo.cloud.provider.punish.execute.model.ExecuteFlowRecord;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;

/**
 * 描述: 裁执分离登记流程记录表 execute_flow_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年08月26日
 */
public interface IExecuteFlowRecordService extends BaseService {


    /**
     *查询流转日志
     * @author wuzhihui
     * @date 2022/8/25
     * @param flowRecordDto
     * @return {@link List< FlowRecordVo>}
     */
    List<ExecuteFlowRecordVo> getFlowRecordVoList(ExecuteFlowRecordRequest flowRecordDto);
    /**
     *查询流转日志
     * @author wuzhihui
     * @date 2022/8/25
     * @param flowRecordDto
     * @return {@link List< FlowRecordVo>}
     */
    List<ExecuteFlowRecord> getFlowRecordList(ExecuteFlowRecordRequest flowRecordDto);
    /**
     * 通用保存流转日志方法
     * @author liyafeng
     * @date 2022/8/15
     * @param
     * @return {@link int}
     */
    int saveCommonFlowRecord(ExecuteFlowCommonDto flowCommonDto);
    /**
     * 查询最新的流转状态
     * @author liyafeng
     * @date 2022/8/15
     * @param
     * @return {@link CaseSourceFlowRecord}
     */
    ExecuteFlowRecord getLastExecuteFlowRecord(String executeId);
    /**
     * 处理当前阶段和下一阶段流转日志
     * @param: [executeId, currentExecuteState, nextExecuteState]
     * @return: void
     * @Author: wuzhihui
     * @Date: 2022/09/06
     */
    void dealCurrentAndNextExecuteFlowRecord(String executeId, String currentExecuteState, String nextExecuteState);
}